#include "stdio.h"
#include "stdlib.h"
#define List_Size 200
struct data {
    int num;
};
typedef struct
{
    struct data num[List_Size];
    int last;
} SqList;
SqList* Create_List(SqList* L)
{
    L = (SqList*)malloc(sizeof(SqList));
    L->last = -1;
    return  L;
}
void Get_Data(SqList* L, int i, int* e)
{
    *e = L->num[i].num;
}
void Insert_List(SqList* L)
{
    struct data d;
    if (L->last == List_Size - 1)
        exit(0);
    else
    {
        scanf("%d", &d.num);
        L->last++;
        L->num[L->last].num = d.num;
    }
}
void Insert(SqList* L, int e)
{
    if (L->last == List_Size - 1)
        exit(0);
    else
    {
        L->last++;
        L->num[L->last].num = e;
    }
}
int Locat_Data(SqList* L, int e)
{
    int i;
    for (i = 0; i <= L->last; i++)
    {
        if (L->num[i].num == e)
            return 1;
    }
    return 0;
}
void Show_List(SqList* L)
{
    int i;
    for (i = 0; i <= L->last; i++)
        if (i == L->last)
            printf("%d", L->num[i].num);
        else
            printf("%d ", L->num[i].num);
    printf("\n");
}
void Fun_Union(SqList* La, SqList* Lb)
{
    int i, e;
    for (i = 0; i <= Lb->last; i++)
    {
        Get_Data(Lb, i, &e);
        if (!Locat_Data(La, e))
            Insert(La, e);
        Show_List(La);
    }

}
int main()
{
    int m, n, i, flag;
    while (scanf("%d", &m) != EOF)
    {
        SqList* La, * Lb;
        La = Create_List(La);
        Lb = Create_List(Lb);
        for (i = 0; i < m; i++)
            Insert_List(La);
        scanf("%d", &n);
        for (i = 0; i < n; i++)
            Insert_List(Lb);
        Show_List(La);
        Show_List(Lb);
        Fun_Union(La, Lb);
        printf("\n");
    }
    return 0;
}